from django.shortcuts import render
from book.models import BookInfo, PeopleInfo
from django.http import HttpResponse
# Create your views here.

def index(request):
    # 1 到数据库中查询数据
    books = BookInfo.objects.all()

    # 2 组织数据
    context = {
        'books': books
    }

    # 3 传递给模板
    # render(request, '', context=context)
    return HttpResponse('index--bookmodel01')

############################# 新增数据 ##################################


from book.models import BookInfo

# 方式一：把新生成的对象返回 需要手动save才能入库

book = BookInfo(
    name="python",
    pub_date="2000-02-03"
)
book.save()

# 方式二：直接入库，但没补全提示(老师没有，咱们有哈哈哈)

BookInfo.objects.create(
    name='java',
    pub_date='2008-09-08'
)


############################# 更新数据 ##################################


# 方式一：先查询（返回对象）、修改实例的属性、保存---》完成更新
# select * from bookinfo where id=1;
book = BookInfo.objects.get(id=1)
book.commentcount = 0
book.save()

# 方式二：直接update(没有补全提示 哭了)
BookInfo.objects.filter(id=1).update(
    commentcount=1
)

############################# 删除数据 ##################################

# 两种方式都是直接删除了
# 方式一：先查询 调用删除
book = BookInfo.objects.get(id=1)
book.delete()

# 方式二：
BookInfo.objects.filter(id=2).delete()

############################# 基本查询 ##################################

# get  查询某个 （得到单一对象）
# all  查询所有 (得到列表)
# count  查询个数

book = BookInfo.objects.get(id=4)

# 查不存在的id会抛出异常
# book400 = BookInfo.objects.get(id=400)

try:
    book400 = BookInfo.objects.get(id=400)
except BookInfo.DoesNotExist:
    pass

# all
BookInfo.objects.all()

# count
# 统计所有
BookInfo.objects.count()
BookInfo.objects.all().count()

BookInfo.objects.get(id__exact=4)

BookInfo.objects.filter(id__gt=5)
BookInfo.objects.filter(name__contains='雪')
BookInfo.objects.filter(pub_date__gt="1900-01-01")
BookInfo.objects.filter(pub_date__year="1900")

############################# F 对象 ##################################
############################# Q 对象 ##################################
############################# 聚合查询 ##################################
############################# 排序 ##################################

BookInfo.objects.all().order_by("readcount")
BookInfo.objects.all().order_by("-readcount")

############################# 关联查询 ##################################

# 1:n
# 通过1 查询n
# book = BookInfo.objects.all()
book = BookInfo.objects.get(id=4)

book.peopleinfo_set.all()

# 通过n 查询1

person = PeopleInfo.objects.get(id=12)
# person.book


# 知道人物 查书
# person = PeopleInfo.objects
BookInfo.objects.filter(peopleinfo__name__exact="岳不群")
BookInfo.objects.filter(peopleinfo__name__contains="衣")
BookInfo.objects.filter(peopleinfo__description__contains="九")

# 知道人查书
PeopleInfo.objects.filter(book__name="尤利西斯")
PeopleInfo.objects.filter(book__readcount__gt=50)


BookInfo.objects.all()

books = BookInfo.objects.all()
# [book.id for book in books]

############################# 分页 ##################################

from django.core.paginator import Paginator

books = BookInfo.objects.all()
# boject_list   结果集
#  per_page   每页多少条记录

# class Paginator(object):
#
#     def __init__(self, object_list, per_page, orphans=0,
#                  allow_empty_first_page=True):

p = Paginator(books, 3)
books_page = p.page(1)




